// 引入API服务
import { storeApi } from '../../services/api';

Page({
  data: {
    searchText: '',
    storeList: [],
    pageNo: 1,
    pageSize: 6,
    loading: false,
    hasMore: true, // 是否还有更多数据
    showBackToTop: false, // 是否显示回到顶部按钮
    scrollTop: 0, // 滚动位置
    latitude: null, // 纬度
    longitude: null, // 经度
    locationAuthorized: false, // 位置权限状态
  },
  
  onLoad() {
    // 页面进入时获取位置权限
    this.getLocationPermission();
  },

  // 获取位置权限
  getLocationPermission() {
    wx.getLocation({
      type: 'gcj02',
      success: (res) => {
        console.log('获取位置成功:', res);
        this.setData({
          latitude: res.latitude,
          longitude: res.longitude,
          locationAuthorized: true
        });
        // 获取位置成功后加载门店列表
        this.loadStoreList();
      },
      fail: (err) => {
        console.log('获取位置失败:', err);
        // 不授权位置也可以进入页面，直接加载门店列表
        this.setData({
          locationAuthorized: false
        });
        this.loadStoreList();
      }
    });
  },
  
  // 重置并加载门店列表
  loadStoreList() {
    this.setData({
      pageNo: 1,
      storeList: [],
      hasMore: true
    });
    this.getStoreList();
  },
  
  // 获取门店列表
  getStoreList(loadMore = false) {
    if (this.data.loading || (!loadMore && !this.data.hasMore)) {
      return;
    }
    
    this.setData({ loading: true });
    
    if (!loadMore) {
      wx.showLoading({
        title: '加载中',
      });
    }
    
    const { pageNo, pageSize, searchText, latitude, longitude, locationAuthorized } = this.data;
    
    // 构建请求参数
    const params = { 
      search: searchText,
      pageNo: loadMore ? pageNo + 1 : pageNo,
      pageSize: pageSize
    };
    
    // 如果获取到位置权限，则添加经纬度参数
    if (locationAuthorized && latitude && longitude) {
      params.lat = latitude;
      params.lng = longitude;
    }
    
    storeApi.getStoreList(params)
      .then(res => {
        if (res.status === 200 && res.data) {
          const newStores = res.data || [];
          for (let index = 0; index < newStores.length; index++) {
            newStores[index].picture = newStores[index].picture.split('|')[0];
          }
          // 判断是否还有更多数据
          const hasMore = newStores.length === this.data.pageSize;
          
          this.setData({
            storeList: loadMore ? [...this.data.storeList, ...newStores] : newStores,
            pageNo: loadMore ? this.data.pageNo + 1 : this.data.pageNo,
            hasMore: hasMore
          });
        } else {
          wx.showToast({
            title: '获取门店列表失败',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        console.error('获取门店列表失败', err);
        wx.showToast({
          title: '网络错误，请稍后重试',
          icon: 'none'
        });
      })
      .finally(() => {
        this.setData({ loading: false });
        wx.hideLoading();
      });
  },
  
  // 加载更多数据
  loadMore() {
    if (!this.data.hasMore || this.data.loading) {
      return;
    }
    this.getStoreList(true);
  },
  
  // 监听滚动到底部
  onScrollToLower() {
    this.loadMore();
  },

  // 监听页面滚动
  onScroll(e) {
    const scrollTop = e.detail.scrollTop;
    const showBackToTop = scrollTop > 500;
    
    if (this.data.showBackToTop !== showBackToTop) {
      this.setData({ showBackToTop });
    }
  },

  // 滚动到顶部
  scrollToTop() {
    this.setData({ scrollTop: 0 });
  },
  
  // 搜索输入
  onSearchInput(e) {
    const searchText = e.detail || '';
    this.setData({
      searchText: searchText
    });
    
    // 重置并加载新的搜索结果
    this.loadStoreList();
  },
  
  // 拨打电话
  callStore(e) {
    const phone = e.currentTarget.dataset.phone;
    if (!phone) {
      wx.showToast({
        title: '电话号码不存在',
        icon: 'none'
      });
      return;
    }
    
    wx.makePhoneCall({
      phoneNumber: phone,
      success: () => {
        console.log('拨打电话成功');
      },
      fail: (err) => {
        console.error('拨打电话失败', err);
      }
    });
  },
  
  // 导航到门店
  navigateToStore(e) {
    const { latitude, longitude, name, address } = e.currentTarget.dataset;
    
    if (!latitude || !longitude) {
      wx.showToast({
        title: '门店位置信息不完整',
        icon: 'none'
      });
      return;
    }
    
    wx.openLocation({
      latitude: parseFloat(latitude),
      longitude: parseFloat(longitude),
      name: name,
      address: address,
      scale: 18
    });
  },

  // 分享给好友
  onShareAppMessage() {
  },

  // 分享到朋友圈
  onShareTimeline() {
  }
}) 